package fr.charlott.view.converter;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import fr.charlott.business.dto.SaisonDTO;
import fr.charlott.business.service.SaisonService;

@Component("saisonConverter")
@FacesConverter("saisonConverter")
public class SaisonConverter implements Converter {

	private static SaisonService saisonService;

	public SaisonConverter() {
		super();
	}

	@Autowired(required = true)
	public SaisonConverter(SaisonService saisonService) {
		super();
		SaisonConverter.saisonService = saisonService;
	}

	@Override
	public Object getAsObject(FacesContext context, UIComponent component, String value) {
		short annee = Short.valueOf(value);
		return saisonService.chargerParAnnee(annee);
	}

	@Override
	public String getAsString(FacesContext context, UIComponent component, Object value) {
		if (value instanceof SaisonDTO) {
			SaisonDTO saisonDTO = (SaisonDTO) value;
			return "" + saisonDTO.getAnnee();
		} else if (value instanceof Short) {
			return "" + value;
		} else {
			throw new IllegalArgumentException("Cannot convert");
		}
	}
}
